7692
5012
Erre a kérdésre már itt vannak válaszok:
Express js - nem lehet átirányítani
(4 válasz)
7 éve zárva.
Passportjs-t használok, alatta egy köztes szoftverrel. Tegyük fel, hogy ellenőrizni kell, hogy a felhasználó bejelentkezik-e, amikor bizonyos dolgokat kér. Ha nincs bejelentkezve, akkor át kell irányítani a bejelentkezési oldalra.
Van egy kérési útvonalam az alábbiak szerint:
app.put ('/ fantasyteams /: fantasyTeamId', auth.
Ezt az útvonalat akkor hívják meg, amikor a felhasználó megpróbálja frissíteni a Fantasy Team nevű erőforrást a webhelyen
Az auth.requiresLogin a következő köztes szoftver:
export.requiresLogin = függvény (req, res, next) {
if (req.isAuthenticated ()) {
visszatérés következő ()
}
return res.redirect ("/ signin");
};
Miután bejelentkezett a felhasználómba, a munkamenet cookie törlésével szimuláltam a munkamenet lejártát. Ezt követően a weboldalon PUT '/ fantasyteams / 123' kérést tettem a fantasy csapat 123. számának frissítésére.
A fantasyteams.update egyszerűen egy mongodb / mongúz mentési művelet:
export.update = függvény (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (function (err) {
res.jsonp (fantasyteam);
});
};
Ahogy az várható volt, a fenti útvonalkezelő (app.put ...) elkapta a kérést, továbbította az auth.requiresLogin köztes szoftvernek, hogy ellenőrizze, be van-e jelentkezve a felhasználó. Tehát kiderül, hogy a felhasználó nincs bejelentkezve, mivel én töröltem munkamenet sütije. res.redirect a várt módon hívódik meg. A webhely azonban nem irányít át a bejelentkezési oldalra. Ezt látom a node.js parancsnaplóiban:
PUT / bejelentkezés 404 328 ms
Mit csináltam rosszul? 
Úgy tűnik, a probléma az, hogy nincs útvonalkezelője a PUT / bejelentkezéshez. Az eredeti kérés egy put volt, így amikor átirányítja, akkor is része annak a böngészőből származó "put" kérésnek. Csak adj hozzá egy kezelőt a put / post / bármi alkalmazáshoz az app.all ('/ signin') segítségével
3
|
Nem a keresett válasz? Böngésszen a node.js munkamenet sütik expressz passport.js címkével ellátott többi kérdésben, vagy tegye fel saját kérdését